﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace uam_fps_game.Gfx
{
    /// <summary>
    /// Represents the visual properties of an object.
    /// </summary>
    public class Material
    {
        public Material()
        {
            DiffuseColor = new Vector4(1, 1, 1, 1);
            DiffuseTexture = null;

            SpecularColorPower = new Vector4(1, 1, 1, 32);
            SpecularTexture = null;

            AmbientColor = new Vector3(1, 1, 1);
            EmissiveColor = new Vector3(1, 1, 1);

            NormalTexture = null;
            ParallaxTexture = null;

            ParallaxScaleBias = new Vector2(-0.5f, 0.1f);

            IsTextured = false;
            IsSpecularMapped = false;
            IsNormalMapped = false;
            IsParallaxMapped = false;
            IsCastingShadows = false;
            IsTransparent = false;
        }

        public Vector4 DiffuseColor { get; set; }
        public Texture DiffuseTexture { get; set; }
        public Vector4 SpecularColorPower { get; set; }
        public Texture SpecularTexture { get; set; }
        public Vector3 AmbientColor { get; set; }
        public Vector3 EmissiveColor { get; set; }
        public Texture NormalTexture { get; set; }
        public Texture ParallaxTexture { get; set; }
        public Vector2 ParallaxScaleBias { get; set; }
        public bool IsTextured { get; set; }
        public bool IsSpecularMapped { get; set; }
        public bool IsNormalMapped { get; set; }
        public bool IsParallaxMapped { get; set; }
        public bool IsCastingShadows { get; set; }
        public bool IsTransparent { get; set; }
    }
}
